package Day_0219.Exception;

/**
 * @author zxc
 * @date 2023/02/19 09:06
 **/
public class Exception_Handle {
    public static void main(String[] args) {
        /**
         * Java中异常处理机制的原理
         * ===>
         * 1.Java通过面向对象的方式,对异常进行处理，Java把异常按照不同的类型进行分类，并提供了良好的接口。
         * 当一个方法出现异常后,就会抛出一个异常对象，该对象中包含有异常信息，
         * 调用这个对象的方法可以捕获到这个异常并对异常进行处理。
         *
         * 2.Java的异常处理是通过5个关键词来实现的：try catch throw throws finally。
         * 一般情况下,是用try来执行一段程序，如果出现异常，系统会抛出（throws），
         * 我们可以通过它的类型来捕捉它，或最后由缺省处理器来处理它（finally）。
         * （1）try：
         *  用来指定一块预防所有异常的程序
         * （2）catch：
         *  紧跟在try后面，用来捕获异常
         * （3）throw：
         *  用来明确的抛出一个异常
         *  ===》
         *  throw关键字，适用于抛出指定异常;
         * （4）throws：
         *  用来标明一个成员函数可能抛出的各种异常
         *  ===》
         *  throws关键字，适用于抛出各种异常;
         * （5）finally：
         *  确保一段代码无论发生什么异常都会被执行的一段代码。
         *
         * 3.在项目中是怎样对异常进行处理的。
         * （1）尽量避免出现runtimeException（运行时异常）;
         *  例如,对于可能出现空指针的代码，带使用对象之前一定要判断一下该对象是否为空，
         *  必要的时候对runtimeException也进行try catch处理。
         * （2）进行try-catch处理的时候，要在catch代码块中，对异常信息进行记录，
         *  通过调用异常类的相关方法获取到异常的相关信息，返回到web端，
         *  不仅要给用户良好的用户体验，也要能帮助程序员良好的定位异常出现的位置及原因。
         *  例如，以前做的一个项目，程序遇到异常页面会显示一个图片告诉用户哪些操作导致程序出现了什么异常，
         *  同时图片上有一个按钮用来点击展示异常的详细信息给程序员看的。
         *
         * 4.请列出 5 个运行时异常
         * （1）NullPointerException ：空指针异常;
         * （2）IndexOutOfBoundsException ：数组越界异常;
         * （3）ClassCastException
         * （4）ArrayStoreException ：
         *  当你试图将错误类型的对象 存储到一个对象数组时，抛出的异常
         *  ===》所要存储的对象 和 对象数组之间的类型不一致;
         * （5）BufferOverflowException ：写入的长度超出了允许的长度
         *
         *
         */
    }
}
